﻿using System;
using System.Collections.Generic;

namespace Sinacor.Servico.Bovespa.Ordens.Service.ServiceImplementation.Translator.BusinessEntityToDataContract
{
    /// <summary>
    /// Translator.BusinessEntityToDataContract Class - AjusteMercadoFuturo
    /// </summary>
    public class AjusteMercadoFuturo
    {
        #region Métodos Públicos

        /// <summary>
        /// Traduz uma entidade de negócio do tipo AjusteMercadoFuturo para um contrato de dados AjusteMercadoFuturoResponse
        /// </summary>
        /// <param name="from">Entidade de negócio AjusteMercadoFuturo</param>
        /// <returns>Contrato de dados AjusteMercadoFuturoResponse</returns>
        public DataContract.Response.AjusteMercadoFuturoResponse ToAjusteMercadoFuturoResponse(BusinessEntity.AjusteMercadoFuturo from)
        {
            DataContract.Response.AjusteMercadoFuturoResponse to = new Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response.AjusteMercadoFuturoResponse();

            to.AnoPregao = from.AnoPregao;
            to.CodigoNegociacao = from.CodigoNegocio;
            to.DataPregao = from.DataPregao;
            to.Fator = from.Fator;
            to.PrecoExercicio = from.PrecoExercicio;
            to.Tipo = (DataContract.Enum.TipoMercado)new System.ComponentModel.EnumConverter(from.Tipo.GetType()).ConvertFrom(from.Tipo.ToString()); 
            to.ValorAjusteAnterior = from.ValorAjusteAnterior;
            to.ValorAjusteAtual = from.ValorAjusteAtual;
            to.Variacao = from.Variacao;

            return to;
        }

        /// <summary>
        /// Realiza um looping pelos items, fazendo chamada ao método de tradução ToMercadoFuturoResponse() que recebe apenas um item        
        /// </summary>
        /// <param name="from">Lista de entidades de negócio AjusteMercadoFuturo</param>
        /// <returns>Lista de contrato de dados AjusteMercadoFuturoResponse</returns>
        public List<DataContract.Response.AjusteMercadoFuturoResponse> ToAjusteMercadoFuturoResponse(List<BusinessEntity.AjusteMercadoFuturo> from)
        {
            List<DataContract.Response.AjusteMercadoFuturoResponse> to = new List<Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response.AjusteMercadoFuturoResponse>();

            foreach (BusinessEntity.AjusteMercadoFuturo itemFrom in from)
            {
                to.Add(this.ToAjusteMercadoFuturoResponse(itemFrom));
            }

            return to;
        }

        #endregion
    }
}